/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package SysAguas.controle;

import SysAguas.dao.DAOGenerico;
import SysAguas.dao.DAOHospede;
import SysAguas.modelo.Endereco;
import SysAguas.modelo.Hospede;
import SysAguas.modelo.Telefone;
import SysAguas.visao.DialogCadastrarHospede;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Heitor
 */
public class CadastrarHospedeServico implements ActionListener {

    
    private DialogCadastrarHospede cadastrarhospede = null;

    public CadastrarHospedeServico(DialogCadastrarHospede cadastrarhospede) {
        this.cadastrarhospede = cadastrarhospede;
    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == cadastrarhospede.getCadastrar()) {
            DAOHospede dao = new DAOHospede();
            Hospede newHospede = populateHospede(cadastrarhospede);
            Endereco newEndereco = populateEndereco(cadastrarhospede);
            Telefone [] newTel = populateTelefone(cadastrarhospede);
 
            List<Hospede> lista = null;
            lista = dao.getHospedeByName(newHospede.getNome(), newHospede.getSobrenome());
            if(lista.size() > 0){
                JOptionPane.showMessageDialog(null, "Cliente "+newHospede.getNome()+
                        " "+ newHospede.getSobrenome()+" já está cadastrado!",
                        "Erro",JOptionPane.ERROR_MESSAGE);
                return;
            }


            dao.cadastrarHospedeWithALL(newHospede, newEndereco, newTel);
            JOptionPane.showMessageDialog(cadastrarhospede,"Cliente Cadastrado!");
            limpar(cadastrarhospede);
            cadastrarhospede.dispose();
        }
        if(e.getSource() == cadastrarhospede.getFechar()){
            cadastrarhospede.dispose();
        }


        
    }

    private Hospede populateHospede(DialogCadastrarHospede dialog) {

        Hospede aux = new Hospede();

        aux.setNome(dialog.getNome().getText());
        aux.setSobrenome(dialog.getSobrenome().getText());
        aux.setDataModificacao(Calendar.getInstance().getTime());


        return aux;
    }

    private Telefone [] populateTelefone(DialogCadastrarHospede dialog) {
//soh cadastra 2 telefone por cliente
        Telefone[] toReturn =new Telefone[2];
        Telefone tel = new Telefone();
        Telefone cel = new Telefone();

        tel.setDdd(dialog.getTelefone().getText().substring(0, 3));
        tel.setNumero(dialog.getTelefone().getText().substring(3, 11));
        cel.setDdd(dialog.getCelular().getText().substring(0, 3));
        cel.setNumero(dialog.getCelular().getText().substring(3, 11));

        toReturn[0] = tel;
        toReturn[1] = cel;

        return toReturn;

    }

    private Endereco populateEndereco(DialogCadastrarHospede dialog) {

        Endereco toReturn = new Endereco();
        toReturn.setRua(dialog.getRua().getText());
        toReturn.setBairro(dialog.getBairro().getText());
        toReturn.setCidade(dialog.getCidade().getText());
        toReturn.setEstado(dialog.getEstado().getText());
        toReturn.setComplemento(null);
        toReturn.setPais(dialog.getPais().getText());
        toReturn.setCep(dialog.getCep().getText());

        return toReturn;
    }
    private void  limpar(DialogCadastrarHospede d){
        d.getBairro().setText("");
        d.getCelular().setText("");
        d.getCep().setText("");
        d.getCidade().setText("");
        d.getEstado().setText("");
        d.getNome().setText("");
        d.getPais().setText("");
        d.getRua().setText("");
        d.getSobrenome().setText("");
        d.getTelefone().setText("");
    }
}
